﻿using System;
using System.ComponentModel;
using System.Xml;

namespace MassIntellect.WorkIt.Frames
{
	public class Generator : WorkFrame
	{
		public Generator()
		{
			IsActive = true;
			State = State.Ready;
			LastTick = DateTime.Now;
		}

		[Serialize]
		[Browsable(true)]
		[Description("Промежуток между сигналами. Если меньше или 0, то сигнал генерируется беспрерывно. P5DT4H3M2.001S (здесь 5 дней 4 часа 3 минуты 2 секунды 1 миллисекунда)")]
		[DefaultValue(0)]
		[Category("Генератор")]
		public TimeSpan Interval { get; set; }

		[Serialize(SerializeAs.Attribute)]
		[Browsable(true)]
		[Description("Активность генератора. Активированный генератор будет автоматически отсылать нулевой сигнал с заданной временной частотой.")]
		[DefaultValue(true)]
		[Category("Генератор")]
		public override bool IsActive
		{
			get
			{
				return base.IsActive;
			}
			set
			{
				base.IsActive = value;
			}
		}

		public DateTime LastTick { get; set; }

		public override void Activate()
		{
			var dt = DateTime.Now;
			if (IsEnabled && (State == State.Ready || Interval.Ticks <= 0 || (dt - LastTick) >= Interval))
			{
				State = State.InWork;
				LastTick = dt;
				base.Activate();
			}
		}
	}
}